"""
@-*- coding: utf-8 -*-
@ python: 3.12.3
@ 创建者: JacksonCode
@ 创建时间: 2025/6/16
"""

"""
准备 pip install pycryptodome
"""

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

key = '0123456789abcdef'.encode()  # 密钥: 必须16字节
iv = b'abcdabcdabcdabcd'  # 便宜量: 16位/字节(字节类型)
text = "i'am a real man"

# 设置加密内容的长度填充（位数位16的整数倍）
text = pad(text.encode(), 16)
# 创建加密对象
aes = AES.new(key, AES.MODE_CBC, iv)  # 创建一个aes对象

en_text = aes.encrypt(text)  # 加密明文
print("aes加密数据:::", en_text)  # b"?\x0e\xa0\xd6\x9f\x8dR\x827\xc4O\x95\x81D'u"

# 二进制密文转化成字符串格式
en_text = base64.b64encode(en_text).decode()  # 将返回的字节型数据转进行base64编码
print(en_text)  # Pw6g1p+NUoI3xE+VgUQndQ==

# 解密部分
decrypt_aes = AES.new(key, AES.MODE_CBC, iv)  # 创建新的解密对象
plainDecrypt = "o7QCgNyEKf7OlWMCYZa2Nw==".encode()
# 将密文数据转化为二进制类型
enCrypted_base64 = base64.b64decode(plainDecrypt)

source = decrypt_aes.decrypt(enCrypted_base64)  # 解密
# 未填充数据
print("aes解密数据:::", source.decode())
# 取消填充数据
print("aes解密数据:::", unpad(source, 16).decode())
